home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / kirei / kirei.bas < prev    next >
BASIC Source File  |  1993-11-30  |  4KB  |  179 lines

  1. 10 '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  2. 20 '      簡易 CD PLAYER(キレイだぞ~号)
  3. 30 '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  4. 40 '           Copyright (C) 1993 Naohiko Toyokura (ToYoZo)
  5. 50 DEF SPRITE 99,0
  6. 60 CLEAR,,512,FRE(4)-200000,0,0
  7. 70 DEFINT A-Z
  8. 80 DIM MUSIC(INT(FRE(4)/2-102000)),UX(4),UY(4),MX(63),MY(63),P(63),C(15),CDI(5),CDS(8)
  9. 90 LOAD@"kirei.eup",MUSIC
  10. 100 PLAY@ MUSIC,1
  11. 110 DEF FNMOS(A,B,C,D)=(MOUSE(0)>=A AND MOUSE(0)<=C AND MOUSE(1)>=B AND MOUSE(1)<=D)
  12. 120 FOR I=0 TO 4
  13. 130  READ UX(I),UY(I)
  14. 140 NEXT
  15. 150 DATA 0,0,0,-1,1,0,0,1,-1,0
  16. 160 CDNO=1
  17. 170 '
  18. 180 SCREEN@0
  19. 190 CLS
  20. 200 LOAD@"STAR.TIF"
  21. 210 GET@A(0,0)-(15,15),P
  22. 220 CLS
  23. 230 DEF SPRITE 0,0,P,0
  24. 240 FOR I=0 TO 1
  25. 250  FOR J=0 TO 31
  26. 260   IF I THEN A!=(31-J)/31 ELSE A!=J/31
  27. 270   FOR K=0 TO 5
  28. 280    C(K)=INT(K*6*A!)*2^10+INT(K*6*A!)*2^5+INT(K*6*A!)
  29. 290   NEXT K
  30. 300   DEF SPRITE 2,I*32+J,C
  31. 310 NEXT J,I
  32. 320 FOR I=0 TO 63
  33. 330  DEF SPRITE 1,I,(160,120),0,1,1,0,I
  34. 340 NEXT
  35. 350 '
  36. 360 SPRITE ON
  37. 370 OUT &H440,27,2:OUT &H442,1*4096+1*256,2
  38. 380 OUT &H440,12,2:OUT &H442,138+512,2
  39. 390 OUT &H440,16,2:OUT &H442,70+512*2,2
  40. 400 OUT &H440,11,2:OUT &H442,138,2
  41. 410 OUT &H440,15,2:OUT &H442,70,2
  42. 420 LOAD@"kirei.tif"
  43. 430 FOR I=0 TO 63
  44. 440  SPRITE 0,I,1
  45. 450 NEXT
  46. 460 INTERVAL 1
  47. 470 ON INTERVAL GOSUB *TIME
  48. 480 MOUSE 0
  49. 490 MOUSE 1,320,240,1
  50. 500 MOUSE 4,0,0,635,475
  51. 510 ON ERROR GOTO *ERROR
  52. 520 '
  53. 530 ON MOUSE(1) GOSUB 740
  54. 540 ON MOUSE(2) GOSUB *CD
  55. 550 MOUSE(1) ON
  56. 560 MOUSE(2) ON
  57. 570 INTERVAL ON
  58. 580 '
  59. 590 A=1:B=1
  60. 600 MOUSE(1) STOP
  61. 610 MOUSE(2) STOP
  62. 620 IF RND<.05! THEN IF A=1 THEN A=-1 ELSE A=1
  63. 630 IF RND<.05! THEN IF B=1 THEN B=-1 ELSE B=1
  64. 640 FOR I=63 TO 0 STEP -1
  65. 650  IF I=0 THEN MX(0)=A:MY(0)=B ELSE MX(I)=MX(I-1):MY(I)=MY(I-1)
  66. 660  SPRITE 6,I,MX(I)*5,MY(I)*5
  67. 670  IF SPRITE(I,2)<63 THEN SPRITE 2,I,SPRITE(I,2)+1 ELSE SPRITE 2,I,0
  68. 680 NEXT
  69. 690 MOUSE(1) ON
  70. 700 MOUSE(2) ON
  71. 710 IF RND<.005! THEN GOSUB *STAR
  72. 720 GOTO 600
  73. 730 '
  74. 740 FOR LOOP=1 TO 60
  75. 750  MOUSE(2) STOP
  76. 760  IF MOUSE(0)/2>SPRITE(0,6)+5 THEN A=1 ELSE IF MOUSE(0)/2<SPRITE(0,6)-5 THEN A=-1 ELSE A=0
  77. 770  IF MOUSE(1)/2>SPRITE(0,7)+5 THEN B=1 ELSE IF MOUSE(1)/2<SPRITE(0,7)-5 THEN B=-1 ELSE B=0
  78. 780  FOR I=63 TO 0 STEP -1
  79. 790   IF I=0 THEN MX(0)=A:MY(0)=B ELSE MX(I)=MX(I-1):MY(I)=MY(I-1)
  80. 800   SPRITE 6,I,MX(I)*5,MY(I)*5
  81. 810   IF SPRITE(I,2)<63 THEN SPRITE 2,I,SPRITE(I,2)+1 ELSE SPRITE 2,I,0
  82. 820  NEXT I
  83. 830  MOUSE(2) ON
  84. 840 NEXT LOOP
  85. 850 RETURN 590
  86. 860 '
  87. 870 *CD
  88. 880 IF FNMOS(0,50,99,69) THEN *PLAY
  89. 890 IF FNMOS(100,50,199,69) THEN *NEXT
  90. 900 IF FNMOS(200,50,299,69) THEN *BACK
  91. 910 IF FNMOS(300,50,399,69) THEN *STOP
  92. 920 IF FNMOS(400,50,499,69) THEN *BGM
  93. 930 IF FNMOS(0,0,99,19) THEN *EXIT
  94. 940 RETURN
  95. 950 '
  96. 960 *PLAY
  97. 970 PLAY OFF
  98. 980 CDINF CDI
  99. 990 CD PLAY CDNO,CDI(5)
  100. 1000 GOSUB *TIME
  101. 1010 RETURN
  102. 1020 '
  103. 1030 *NEXT
  104. 1040 PLAY OFF
  105. 1050 CDINF CDI
  106. 1060 CD PLAY CDNO+1,CDI(5)
  107. 1070 CDNO=CDNO+1
  108. 1080 GOSUB *TIME
  109. 1090 RETURN
  110. 1100 '
  111. 1110 *BACK
  112. 1120 PLAY OFF
  113. 1130 CDINF CDI
  114. 1140 CD PLAY CDNO-1,CDI(5)
  115. 1150 CDNO=CDNO-1
  116. 1160 GOSUB *TIME
  117. 1170 RETURN
  118. 1180 '
  119. 1190 *STOP
  120. 1200 CDNO=1
  121. 1210 GOSUB *TIME
  122. 1220 CD STOP
  123. 1230 RETURN
  124. 1240 '
  125. 1250 *BGM
  126. 1260 GOSUB *STOP
  127. 1270 PLAY@ MUSIC,1
  128. 1280 RETURN
  129. 1290 '
  130. 1300 *EXIT
  131. 1310 INTERVAL OFF
  132. 1320 ON ERROR GOTO 1500
  133. 1330 MOUSE 5
  134. 1340 FOR I=0 TO 63
  135. 1350  SPRITE 0,I,0
  136. 1360  WAIT 3
  137. 1370 NEXT
  138. 1380 FOR I=0 TO 255 STEP 5
  139. 1390  PALETTE 0,[I,I,I],1
  140. 1400 NEXT
  141. 1410 FOR I=0 TO 15
  142. 1420  PALETTE I,7,1
  143. 1430  WAIT 10
  144. 1440 NEXT
  145. 1450 CLS
  146. 1460 FOR I=254 TO 0 STEP -2
  147. 1470  PALETTE 0,[I,I,I],1
  148. 1480 NEXT
  149. 1490 CD STOP
  150. 1500 END
  151. 1510 '
  152. 1520 *ERROR
  153. 1530 IF ERR<>115 THEN RESUME 940
  154. 1540 CDNO=CDNO+1:RESUME
  155. 1550 '
  156. 1560 *TIME
  157. 1570 CDSTAT CDS
  158. 1580 LINE(10,85)-(160,102),PSET,0,BF
  159. 1590 SYMBOL(10,86),"No,"+STR$(CDS(5))+"  "+STR$(CDS(6))+" m"+STR$(CDS(7))+" s",1,1,4
  160. 1600 RETURN
  161. 1610 '
  162. 1620 *STAR
  163. 1630 MOUSE(1) STOP
  164. 1640 MOUSE(2) STOP
  165. 1650 INTERVAL STOP
  166. 1660 MOUSE 1,,,0
  167. 1670 IF RND<.333! THEN
  168. 1680  FOR K=0 TO 600 STEP 4:PSET(650-K,K),7:PSET(650-(K-100),K-100),0:NEXT
  169. 1690 ELSE IF RND<.333! THEN
  170. 1700  FOR K=0 TO 450 STEP 4:PSET(K,150+K),7:PSET(K-100,150+K-100),0:NEXT
  171. 1710 ELSE
  172. 1720  FOR K=0 TO 750 STEP 4:PSET(K,300-K/5),7:PSET(K-100,300-(K-100)/5),0:NEXT
  173. 1730 ENDIF
  174. 1740 MOUSE 1,,,1
  175. 1750 INTERVAL ON
  176. 1760 MOUSE(2) ON
  177. 1770 MOUSE(1) ON
  178. 1780 RETURN
  179.